/**
 * @file App_Message.h
 * @brief 该头文件定义了消息格式转换相关的函数接口。
 *        主要包含字符数组消息与 cJSON 字符串消息之间的相互转换函数。
 */

#ifndef __APP_MESSAGE_H__
#define __APP_MESSAGE_H__
#include "cJSON/cJSON.h"
#include "log/log.h"
#include "App_Common.h"
#include <string.h>

/**
 * @brief 将字符数组消息转化为 cJSON 字符串消息。
 * 
 * 该函数接收一个字符数组及其长度作为输入，将其转换为符合 cJSON 格式的字符串。
 * 调用者需要负责释放该函数返回的内存，以避免内存泄漏。
 * 
 * @param array 输入的字符数组消息。
 * @param arrLen 字符数组的长度。
 * @return char* 转换后的 cJSON 字符串消息，如果转换失败则返回 NULL。
 */
char *App_Message_ArrayToCJSON(char *array, int arrLen);

/**
 * @brief 将 cJSON 字符串消息转化为字符数组消息。
 * 
 * 该函数接收一个 cJSON 字符串消息作为输入，将其解析并存储到指定的字符缓冲区中。
 * 如果缓冲区空间不足，可能会发生截断。
 * 
 * @param json 输入的 cJSON 字符串消息。
 * @param charbuf 用于存储转换后字符数组消息的缓冲区。
 * @param buf_size 缓冲区的大小。
 * @return int 转换后的字符数组消息的长度，如果解析失败则返回 -1。
 */
int App_Message_CJSONToArray(char *json, char *charbuf, int buf_size);

#endif /* __APP_MESSAGE_H__ */
